There are many commercial Voice eXtensible Markup Language (“VoiceXML” or “VXML”) applications which perform voice-based functions, processing millions of telephone calls every day. A few examples of these applications include voice-based functions such as order inquiry, package tracking, driving directions, emergency notification, wake-up calls, flight tracking, voice access to email, customer relationship management, prescription refilling, audio newsmagazines, voice dialing, real-estate information, directory assistance applications, etc.
Web browsers retrieve and execute documents written in HyperText Markup Language (“HTML”) and JavaScript. Some web browsers improve download time for web pages by caching an entire HTML document. The next time that document is requested, the web browser is able to retrieve the document from a local memory cache without having to retrieve the document across a network. However, web browsers only cache the original document, not the results of any intermediate processing steps.
Voice application engines operate in a similar manner as web browsers. Voice application engines retrieve and execute documents from a web server which are written in VoiceXML, Call Control XML (“CCXML”), or State Chart XML (“SCXML”) and contain embedded code, such as JavaScript.
Inside a voice application engine, the XML document is parsed into a binary representation based on a tree data structure. In addition to the JavaScript code that is embedded in the document, the engine may generate additional JavaScript code, consuming part of the tree in the process. A JavaScript interpreter translates the JavaScript code into binary instructions for a virtual machine known as bytecodes. Under typical usage patterns for a voice application engine, multiple channels may be simultaneously accessing the same document. Each channel creates an XML parse tree and processes the JavaScript into bytecodes upon execution.
These hybrid XML/JavaScript documents are currently a favored method of implementing voice applications because they are relatively easy to create. However, in comparison to applications written in C++ and compiled into directly-executable binaries, the XML/JavaScript applications run slowly and exhibit lower channel densities. Therefore, what is needed is a system and method for improving the efficiency and access time of voice applications.